<?php

class Docente_Model extends CI_Model {


    function actualizarDocente($parameters, $ide_pers) {
        $update = array(
            "cat_escalofon_doc" => $parameters['cat_escalofon_doc'],
            "tipo_contrato_doc" => $parameters['tipo_contrato_doc'],
            "concurso_doc" => $parameters['concurso_doc'],
            "dedicacion_doc" => $parameters['dedicacion_doc'],
            "cursa_estudios_doc" => $parameters['cursa_estudios_doc'],
            "fecha_ingreso1_doc" => $parameters['fecha_ingreso1_doc'],
            "fecha_salida1_doc" => $parameters['fecha_salida1_doc'],
            "fechaingeso2_doc" => $parameters['fechaingeso2_doc'],
            "fecha_salida2_doc" => $parameters['fecha_salida2_doc'],
            "fecha_ingreso3_doc" => $parameters['fechaingreso3_doc'],
            "fecha_salida3_doc" => $parameters['fecha_salida3_doc'],
            "activo_doc" => $parameters['activo_doc']);
        $this->db->where("persona_ide_pers", $ide_pers);
        $this->db->update("docente", $update);
    }

    function getDatosDocente($ide_pers) {
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where('persona_ide_pers', $ide_pers);
        $this->db->where('docente.eliminado_doc', 0);
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
        }
        $query->free_result();
        return $data;
    }

    function getListado() {
        $this->db->select('docente.persona_ide_pers,docente.ide_doc,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,docente.cat_escalofon_doc,activo_doc');
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where('docente.eliminado_doc', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");

        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }


    function getBusquedaDocente($valor, $tipo) {
        if ($tipo == 1)
            $criterio = "persona.cedula_pers LIKE '%$valor%'";
        elseif ($tipo == 2)
            $criterio = "persona.apellido_pers LIKE '%$valor%'";
        else
            $criterio = "persona.nombre_pers LIKE '%$valor%'";


        $this->db->select('docente.persona_ide_pers,docente.ide_doc,persona.cedula_pers,persona.apellido_pers,
            persona.nombre_pers,docente.cat_escalofon_doc,activo_doc');
        $this->db->from('persona');
        $this->db->join('docente', 'persona.ide_pers = docente.persona_ide_pers', 'inner');
        $this->db->where($criterio);
        $this->db->where('docente.eliminado_doc', 0);
        $this->db->order_by("persona.apellido_pers");
        $this->db->order_by("persona.nombre_pers");
        $query = $this->db->get();

        if ($query->num_rows() > 0) {
            foreach ($query->result_array() as $row) {
                $data[] = $row; //$row;
            }
            $query->free_result();
            return $data;
        } else {
            return null;
        }
    }
    /**
     * De jose.
     * Cargar Usuarios docentes para crear las cuentas
     * @return type
     */
    public function cargarUsuarioDocente(){
        $query="select p.ide_pers, p.cedula_pers, p.apellido_pers, p.nombre_pers, p.email_inst_pers, p.username_pers,fono_pers from docente inner join persona as p on p.ide_pers = docente.persona_ide_pers inner join distributivo on distributivo.ide_doc= docente.ide_doc inner join materia on materia.ide_mat = distributivo.ide_mat inner join periodos_lectivos as pl on pl.ide_lec=distributivo.ide_lec where pl.estado_lec='ABIERTO' and docente.eliminado_doc=0  group by  p.cedula_pers order by p.apellido_pers";
        $Q=$this->db->query($query);
        return $Q->result_array();         
    }
    /**
     * Carga las materias que le pertenecen a un docente
     * @param type $ide_pers el identificador del docente
     * @return type una lista de las materias con sus respectivo docente
     */
    public function cargarMaterias($ide_pers){
        $query="select p.cedula_pers, p.apellido_pers, p.nombre_pers, materia.nombre_mat, distributivo.seccion, 
            distributivo.paralelo, carrera.nombre_car, carrera.cod_car, ciclos.nombre_cic, pl.ide_lec, materia.ide_mat, 
            docente.ide_doc  from docente 
            inner join persona as p on p.ide_pers = docente.persona_ide_pers 
            inner join distributivo on distributivo.ide_doc= docente.ide_doc 
            inner join materia on materia.ide_mat = distributivo.ide_mat 
            inner join periodos_lectivos as pl on pl.ide_lec=distributivo.ide_lec 
            inner join ciclos on ciclos.ide_cic = materia.ciclos_ide_cic 
            inner join pensum on pensum.ide_pen = ciclos.ide_pen inner join carrera on carrera.ide_car = pensum.ide_car  
            where pl.estado_lec='ABIERTO' and p.ide_pers = ".$ide_pers." and distributivo.eliminado=false";
            $Q=$this->db->query($query);
            return $Q->result_array();    
    }
    /**
     * Carga los estudiantes que le pertenecen al docente poe calificaciones
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function cargarEstudiantesCalificaciones($periodo, $materia, $seccion, $paralelo){
        $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est, calificaciones.*    
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join calificaciones on calificaciones.cursa_ide_cur=cursa.ide_cur   
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' order by apellido_pers";
        $Q=$this->db->query($query);
            return $Q->result_array(); 
    }
    /**
     * Carga los estudiantes que le pertenecen al docente
     * @param type $periodo El periodo lectivo actual
     * @param type $materia La materia que dicta el docente
     * @param type $seccion La seccion de la materia
     * @param type $paralelo El paralelo que da
     * @return type La lista de estudiantes
     */
    public function cargarEstudiantes($periodo, $materia, $seccion, $paralelo){
        $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est  
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers              
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' and (cursa.estado_cur = 0 or cursa.estado_cur=4) and (cursa.reasig_arrastre_cur =0 or cursa.reasig_arrastre_cur !=0) order by apellido_pers";
        $Q=$this->db->query($query);
            return $Q->result_array(); 
    }
    /**
     * Función que permite borrar una calificacion
     * @param type $id_calificacion
     * @return type
     */
    public function borrarEstudianteCalificacion($id_calificacion){
        $this->db->where('ide_cal',$id_calificacion);
        return $this->db->delete('calificaciones');
    }
    public function verificarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo){
        $query = "select calificaciones.*, SUM(calificaciones.total1) as primero, SUM(calificaciones.total2) as segundo 
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join calificaciones on calificaciones.cursa_ide_cur=cursa.ide_cur   
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' order by apellido_pers";
            $Q=$this->db->query($query);
            return $Q->result_array(); 
    }
    
    public function sumarNotasPrimeroSegundo($periodo, $materia, $seccion, $paralelo){
       $query = "select estudiante.ide_est, cursa.ide_cur, persona.apellido_pers, persona.nombre_pers, seccion, 
            paralelo, materia_ide_mat, estudiante.activo_est, calificaciones.*, cursa.estado_cur,     
            (calificaciones.total1 + calificaciones.total2) as total, (calificaciones.asiste2_cal + calificaciones.asiste1_cal) as asiste   
            from cursa 
            inner join estudiante on estudiante.ide_est = cursa.estudiante_ide_est 
            inner join persona on persona.ide_pers = estudiante.persona_ide_pers  
            inner join calificaciones on calificaciones.cursa_ide_cur=cursa.ide_cur   
            where periodos_lectivos_ide_lec = ".$periodo." 
             and materia_ide_mat = ".$materia." 
             and seccion = ".$seccion." 
             and paralelo='".$paralelo."' order by apellido_pers";
        $Q=$this->db->query($query);
            return $Q->result_array(); 
    }
}